﻿Public Class xtf_ABMliquidacion

    Dim ulg_row As DataRow
    Dim obj_liquidacion As cls_liquidacion_ = Nothing
    Dim dtt_clientearticulo_, dtt_clientevehiculo_, dtt_cliente_ As DataTable
    Private ds As New DataSet

    Public Sub New()
        InitializeComponent()
        'CargarPersonal()

        'Prepara grid y datasource clientevehiculo----------------------------------------------------
        dtt_cliente_ = New DataTable
        dtt_cliente_.Columns.Add("Nombre", GetType(String))
        dtt_cliente_.Columns.Add("idcliente", GetType(Integer))
        dtt_cliente_.Columns.Add("Razon Social", GetType(String))
        dtt_cliente_.Columns.Add("Saldo", GetType(Decimal))
        dtt_cliente_.Columns.Add("Valor actual", GetType(Decimal))
        dtt_cliente_.Columns.Add("Descuento %", GetType(Decimal))
        dtt_cliente_.Columns.Add("Descuento", GetType(Decimal))
        dtt_cliente_.Columns.Add("Recargo %", GetType(Decimal))
        dtt_cliente_.Columns.Add("Recargo", GetType(Decimal))
        dtt_cliente_.Columns.Add("Total", GetType(Decimal))
        dtt_cliente_.Columns.Add("Objeto", GetType(Object))

        '-----------------------------------------------------------------------------------------------

        'Prepara grid y datasource proveedorarticulo----------------------------------------------------
        dtt_clientearticulo_ = New DataTable
        dtt_clientearticulo_.Columns.Add("idcliente", GetType(Integer))
        dtt_clientearticulo_.Columns.Add("Articulo", GetType(String))
        dtt_clientearticulo_.Columns.Add("Valor general", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Valor cliente", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Descuento %", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Descuento", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Recargo", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Recargo %", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Total", GetType(Decimal))
        dtt_clientearticulo_.Columns.Add("Objeto", GetType(Object))
        '-----------------------------------------------------------------------------------------------

        'Prepara grid y datasource clientevehiculo----------------------------------------------------
        dtt_clientevehiculo_ = New DataTable
        dtt_clientevehiculo_.Columns.Add("Icono", GetType(Image))
        dtt_clientevehiculo_.Columns.Add("idcliente", GetType(Integer))
        dtt_clientevehiculo_.Columns.Add("Dominio", GetType(String))
        dtt_clientevehiculo_.Columns.Add("Marca", GetType(String))
        dtt_clientevehiculo_.Columns.Add("Modelo", GetType(String))
        dtt_clientevehiculo_.Columns.Add("Color", GetType(String))
        dtt_clientevehiculo_.Columns.Add("Objeto", GetType(Object))
        '-----------------------------------------------------------------------------------------------

        ds.Tables.AddRange(New DataTable() {dtt_cliente_, dtt_clientearticulo_, dtt_clientevehiculo_})
        ds.Relations.Add("Detalle", dtt_cliente_.Columns("idcliente"), dtt_clientearticulo_.Columns("idcliente"))
        ds.Relations.Add("Vehículos", dtt_cliente_.Columns("idcliente"), dtt_clientevehiculo_.Columns("idcliente"))



        AgregarValidaciones()

        gdc_general.DataSource = dtt_cliente_
        gdc_general.ForceInitialize()

        'Prepara grid y datasource clientevehiculo----------------------------------------------------
        gdv_general.OptionsBehavior.Editable = True
        gdv_general.Columns("Nombre").OptionsColumn.AllowEdit = False
        gdv_general.Columns("idcliente").OptionsColumn.AllowEdit = False
        gdv_general.Columns("Razon Social").OptionsColumn.AllowEdit = False
        gdv_general.Columns("Saldo").OptionsColumn.AllowEdit = False
        gdv_general.Columns("Valor actual").OptionsColumn.AllowEdit = False
        gdv_general.Columns("Total").OptionsColumn.AllowEdit = False
        gdv_general.Columns("Objeto").OptionsColumn.AllowEdit = False

        columnaEditableDecimal(gdv_general.Columns("Descuento %"))
        columnaEditableDecimal(gdv_general.Columns("Descuento"))
        columnaEditableDecimal(gdv_general.Columns("Recargo %"))
        columnaEditableDecimal(gdv_general.Columns("Recargo"))

        gdv_general.Columns("Objeto").Visible = False
        gdv_general.Columns("idcliente").Visible = False
        '-----------------------------------------------------------------------------------------------
    End Sub
    Private Sub CargarDetalle()
        dtt_clientearticulo_.Rows.Clear()
        dtt_clientevehiculo_.Rows.Clear()
        dtt_cliente_.Rows.Clear()

        Dim clientes As New cls_cliente_
        If clientes.CargarTodos(True) Then
            For Each cliente As cls_cliente_ In clientes.Items
                Dim rowCliente As DataRow = dtt_cliente_.NewRow
                rowCliente("Nombre") = cliente.nombrefantasia
                rowCliente("idcliente") = cliente.idcliente
                rowCliente("Razon Social") = cliente.razonsocial
                Dim saldo As New cls_asiento_
                If saldo.CargarXidtercero(cliente.idtercero) Then
                    rowCliente("Saldo") = saldo.Items(saldo.Items.Count - 1).calcularSaldo
                Else
                    rowCliente("Saldo") = 0
                End If

                Dim sumaValorActual As Decimal = 0
                Dim descuentoGeneral As Decimal = 0
                Dim recargoGeneral As Decimal = 0

                rowCliente("Valor actual") = 0
                rowCliente("Descuento %") = 0
                rowCliente("Descuento") = 0
                rowCliente("Recargo %") = 0
                rowCliente("Recargo") = 0
                rowCliente("Total") = 0
                rowCliente("Objeto") = cliente
                dtt_cliente_.Rows.Add(rowCliente)
                If Not IsNothing(cliente.clientearticulo_) Then
                    If Not IsNothing(cliente.clientearticulo_.Items) Then
                        For Each clientearticulo As cls_clientearticulo_ In cliente.clientearticulo_.Items

                            Dim liquidaciondetalle As New cls_liquidaciondetalle_
                            If Not liquidaciondetalle.BuscarXidliquidacionXidclientearticulo(obj_liquidacion.idliquidacion, clientearticulo.idclientearticulo) Then
                                liquidaciondetalle = New cls_liquidaciondetalle_
                                liquidaciondetalle.idclientearticulo = clientearticulo.idclientearticulo
                            End If

                            Dim rowClienteArticulo As DataRow = dtt_clientearticulo_.NewRow
                            rowClienteArticulo("idcliente") = clientearticulo.idcliente
                            rowClienteArticulo("Articulo") = clientearticulo.articulo.ToString
                            Dim listaprecioarticulo As New cls_listaprecioarticulo_
                            rowClienteArticulo("Valor general") = 0
                            rowClienteArticulo("Valor cliente") = 0
                            If listaprecioarticulo.BuscarXidarticuloXidclienteUltimo(clientearticulo.idarticulo, clientearticulo.idcliente) Then
                                rowClienteArticulo("Valor cliente") = listaprecioarticulo.valor
                            End If
                            If listaprecioarticulo.BuscarXidarticuloUltimoGENERAL(clientearticulo.idarticulo) Then
                                rowClienteArticulo("Valor general") = listaprecioarticulo.valor
                                If clientearticulo.idlistaprecio = 0 Then
                                    rowClienteArticulo("Valor cliente") = listaprecioarticulo.valor
                                End If
                            End If
                            liquidaciondetalle.ultimovalor = rowClienteArticulo("Valor cliente")
                            If liquidaciondetalle.nuevovalor <> 0 Then
                                rowClienteArticulo("Valor cliente") = liquidaciondetalle.nuevovalor
                            End If
                            sumaValorActual += rowClienteArticulo("Valor cliente")
                            rowClienteArticulo("Descuento %") = liquidaciondetalle.descuentoP
                            rowClienteArticulo("Descuento") = liquidaciondetalle.descuentoV
                            descuentoGeneral += liquidaciondetalle.descuentoV
                            rowClienteArticulo("Recargo %") = liquidaciondetalle.recargoP
                            rowClienteArticulo("Recargo") = liquidaciondetalle.recargoV
                            recargoGeneral += liquidaciondetalle.recargoV
                            rowClienteArticulo("Total") = rowClienteArticulo("Valor cliente") - rowClienteArticulo("Descuento") + rowClienteArticulo("Recargo")
                            rowClienteArticulo("Objeto") = liquidaciondetalle

                            dtt_clientearticulo_.Rows.Add(rowClienteArticulo)
                        Next
                    End If
                End If

                rowCliente("Valor actual") = sumaValorActual
                rowCliente("Descuento %") = (descuentoGeneral * 100) / sumaValorActual
                rowCliente("Descuento") = descuentoGeneral
                rowCliente("Recargo %") = (recargoGeneral * 100) / sumaValorActual
                rowCliente("Recargo") = recargoGeneral
                rowCliente("Total") = sumaValorActual - descuentoGeneral + recargoGeneral

                If Not IsNothing(cliente.clientevehiculo_) Then
                    If Not IsNothing(cliente.clientevehiculo_.Items) Then
                        For Each clientevehiculo As cls_clientevehiculo_ In cliente.clientevehiculo_.Items
                            Dim rowclientevehiculo As DataRow = dtt_clientevehiculo_.NewRow
                            rowclientevehiculo("idcliente") = clientevehiculo.idcliente
                            rowclientevehiculo("Dominio") = clientevehiculo.vehiculo.patente
                            rowclientevehiculo("Marca") = clientevehiculo.vehiculo.marca
                            rowclientevehiculo("Modelo") = clientevehiculo.vehiculo.modelo
                            rowclientevehiculo("Color") = clientevehiculo.vehiculo.color
                            rowclientevehiculo("Objeto") = clientevehiculo
                            If clientevehiculo.primario Then
                                rowclientevehiculo("Icono") = imc_defecto.Images(0)
                            Else
                                rowclientevehiculo("Icono") = Nothing
                            End If
                            dtt_clientevehiculo_.Rows.Add(rowclientevehiculo)
                        Next
                    End If
                End If
            Next
        End If
    End Sub
    Private Sub gridViewTests_MasterRowExpanded(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs) Handles gdv_general.MasterRowExpanded
        'Dim gridViewTests As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(sender, DevExpress.XtraGrid.Views.Grid.GridView)
        'Dim gridViewDefects As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(gridViewTests.GetDetailView(e.RowHandle, e.RelationIndex), DevExpress.XtraGrid.Views.Grid.GridView)
        'gridViewDefects.BeginUpdate()
        'gridViewDefects.Columns("Objeto").Visible = False
        'gridViewDefects.Columns("idcliente").Visible = False
        'gridViewDefects.EndUpdate()
    End Sub
    Private Sub gdc_general_ViewRegistered(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.ViewOperationEventArgs) Handles gdc_general.ViewRegistered
        Dim view As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(e.View, DevExpress.XtraGrid.Views.Grid.GridView)
        If (Not view.IsDetailView) Then
            Return
        End If
        Dim parentView As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(view.ParentView, DevExpress.XtraGrid.Views.Grid.GridView)
        Dim name As String = parentView.GetRelationName(view.SourceRowHandle, 0)
        Try
            view.OptionsBehavior.Editable = True
            view.Columns("Objeto").Visible = False
            view.Columns("idcliente").Visible = False
            view.Columns("idcliente").OptionsColumn.AllowEdit = False
            view.Columns("Articulo").OptionsColumn.AllowEdit = False
            view.Columns("Valor general").OptionsColumn.AllowEdit = False
            'view.Columns("Valor cliente").OptionsColumn.AllowEdit = False
            view.Columns("Total").OptionsColumn.AllowEdit = False
            view.Columns("Objeto").OptionsColumn.AllowEdit = False
            AddHandler view.CellValueChanged, AddressOf gdv_clientearticulo__CellValueChanged
            columnaEditableDecimal(view.Columns("Valor cliente"))
            columnaEditableDecimal(view.Columns("Descuento %"))
            columnaEditableDecimal(view.Columns("Descuento"))
            columnaEditableDecimal(view.Columns("Recargo %"))
            columnaEditableDecimal(view.Columns("Recargo"))
        Catch ex As Exception
            view.OptionsBehavior.Editable = False
            view.Columns("Objeto").Visible = False
            view.Columns("idcliente").Visible = False
            view.Columns("Icono").ColumnEdit = New DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit
            view.Columns("Icono").Caption = " "
        End Try

    End Sub

    Public Overrides Sub CargarObjetos()
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_liquidacion = New cls_liquidacion_
            btn_Registro.Enabled = False
            dtp_fecha.DateTime = Now.Date
            CargarDetalle()
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef liquidacion As cls_liquidacion_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_liquidacion) Then
            obj_liquidacion = New cls_liquidacion_
        End If
        obj_liquidacion = liquidacion
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_liquidacion.ToString
        txt_ID.Text = obj_liquidacion.idliquidacion
        txt_observaciones.Text = obj_liquidacion.observaciones
        chk_aplicada.Checked = obj_liquidacion.aplicada
        chk_liquidada.Checked = obj_liquidacion.liquidada
        dtp_fecha.DateTime = obj_liquidacion.fecha.Date
        dtp_aplicadafecha.DateTime = obj_liquidacion.fechaaplicada.Date
        dtp_liquidadafecha.DateTime = obj_liquidacion.fechaliquidada.Date

        If (obj_liquidacion.liquidada) Then
            btn_liquidar.Enabled = False
        End If

        CargarDetalle()

        btn_Registro.Enabled = True

        obj_liquidacion.liquidaciondetalle_ = Nothing
        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean

        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If

        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            obj_liquidacion.observaciones = txt_observaciones.Text
            obj_liquidacion.aplicada = chk_aplicada.Checked
            obj_liquidacion.liquidada = chk_liquidada.Checked
            obj_liquidacion.fecha = dtp_fecha.DateTime



            'Guardo liquidaciondetalle------------------------------------------------------
            If IsNothing(obj_liquidacion.liquidaciondetalle_) Then
                obj_liquidacion.liquidaciondetalle_ = New cls_liquidaciondetalle_
            End If
            If IsNothing(obj_liquidacion.liquidaciondetalle_.Items) Then
                obj_liquidacion.liquidaciondetalle_.Items = New Collections.Generic.List(Of cls_liquidaciondetalle_)
            End If
            obj_liquidacion.liquidaciondetalle_.Items = New Collections.Generic.List(Of cls_liquidaciondetalle_)
            For Each Elemento As DataRow In dtt_clientearticulo_.Rows

                Dim liquidaciondetalle As cls_liquidaciondetalle_ = Elemento("Objeto")
                liquidaciondetalle.descuentoP = Elemento("Descuento %")
                liquidaciondetalle.descuentoV = Elemento("Descuento")
                liquidaciondetalle.recargoP = Elemento("Recargo %")
                liquidaciondetalle.recargoV = Elemento("Recargo")
                obj_liquidacion.liquidaciondetalle_.Items.Add(liquidaciondetalle)

            Next

            If txt_ID.Text = "" Then
                obj_liquidacion.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOliquidacion_).AgregarItem(obj_liquidacion)
                End If
                Modificar(obj_liquidacion, frm_listado, ulg_row)
            Else
                obj_liquidacion.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOliquidacion_).ModificarItem(obj_liquidacion, ulg_row)
                End If
                Modificar(obj_liquidacion, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_liquidacion.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_liquidacion.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub columnaEditableDecimal(ByRef prm_col As DevExpress.XtraGrid.Columns.GridColumn)
        prm_col.ColumnEdit = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
        CType(prm_col.ColumnEdit, DevExpress.XtraEditors.Repository.RepositoryItemTextEdit).Mask.EditMask = "n2" '& int_cantdecimales
        CType(prm_col.ColumnEdit, DevExpress.XtraEditors.Repository.RepositoryItemTextEdit).Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric
        CType(prm_col.ColumnEdit, DevExpress.XtraEditors.Repository.RepositoryItemTextEdit).Mask.UseMaskAsDisplayFormat = True
        CType(prm_col.ColumnEdit, DevExpress.XtraEditors.Repository.RepositoryItemTextEdit).AllowNullInput = DevExpress.Utils.DefaultBoolean.False
    End Sub

    Private Sub gdv_clientearticulo__CellValueChanged(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs) Handles gdv_general.CellValueChanged
        Dim view As DevExpress.XtraGrid.Views.Grid.GridView = TryCast(sender, DevExpress.XtraGrid.Views.Grid.GridView)
        If (Not view.IsDetailView) Then
            Select Case e.Column.Name
                Case "colDescuento%"
                    Dim row As DataRow = gdv_general.GetDataRow(e.RowHandle)
                    row("Descuento") = 0
                    row("Total") = 0
                    For Each detallerow As DataRow In row.GetChildRows("Detalle")
                        detallerow("Descuento %") = e.Value
                        detallerow("Descuento") = (e.Value * detallerow("Valor cliente")) / 100
                        row("Descuento") += detallerow("Descuento")
                        detallerow("Total") = detallerow("Valor cliente") - detallerow("Descuento") + detallerow("Recargo")
                        row("Total") += detallerow("Total")
                    Next
                Case "colDescuento"
                    Dim row As DataRow = gdv_general.GetDataRow(e.RowHandle)
                    row("Total") = 0
                    For Each detallerow As DataRow In row.GetChildRows("Detalle")
                        detallerow("Descuento %") = (e.Value * 100) / row("Valor actual")
                        detallerow("Descuento") = (detallerow("Descuento %") * detallerow("Valor cliente")) / 100
                        'row("Descuento") += detallerow("Descuento")
                        row("Descuento %") = detallerow("Descuento %")
                        detallerow("Total") = detallerow("Valor cliente") - detallerow("Descuento") + detallerow("Recargo")
                        row("Total") += detallerow("Total")
                    Next
                Case "colRecargo%"
                    Dim row As DataRow = gdv_general.GetDataRow(e.RowHandle)
                    row("Recargo") = 0
                    row("Total") = 0
                    For Each detallerow As DataRow In row.GetChildRows("Detalle")
                        detallerow("Recargo %") = e.Value
                        detallerow("Recargo") = (e.Value * detallerow("Valor cliente")) / 100
                        row("Recargo") += detallerow("Recargo")
                        detallerow("Total") = detallerow("Valor cliente") - detallerow("Descuento") + detallerow("Recargo")
                        row("Total") += detallerow("Total")
                    Next
                Case "colRecargo"
                    Dim row As DataRow = gdv_general.GetDataRow(e.RowHandle)
                    row("Total") = 0
                    For Each detallerow As DataRow In row.GetChildRows("Detalle")
                        detallerow("Recargo %") = (e.Value * 100) / row("Valor actual")
                        detallerow("Recargo") = (detallerow("Recargo %") * detallerow("Valor cliente")) / 100
                        'row("Recargo") += detallerow("Recargo")
                        row("Recargo %") = detallerow("Recargo %")
                        detallerow("Total") = detallerow("Valor cliente") - detallerow("Descuento") + detallerow("Recargo")
                        row("Total") += detallerow("Total")
                    Next
            End Select
        Else
            Select Case e.Column.Name
                Case "colDescuento%"
                    Dim row As DataRow = view.GetDataRow(e.RowHandle)
                    row("Descuento") = 0
                    row("Total") = 0
                    row("Descuento %") = e.Value
                    row("Descuento") = (e.Value * row("Valor cliente")) / 100
                    'row("Descuento") += row("Descuento")
                    row("Total") = Format(row("Valor cliente") - row("Descuento") + row("Recargo"), "n2")
                    'row("Total") += row("Total")
                Case "colDescuento"
                    Dim row As DataRow = view.GetDataRow(e.RowHandle)
                    row("Total") = 0
                    row("Descuento %") = (e.Value * 100) / row("Valor cliente")
                    row("Descuento") = (row("Descuento %") * row("Valor cliente")) / 100
                    'row("Descuento") += row("Descuento")
                    row("Descuento %") = row("Descuento %")
                    row("Total") = Format(row("Valor cliente") - row("Descuento") + row("Recargo"), "n2")
                    'row("Total") += row("Total")
                Case "colRecargo%"
                    Dim row As DataRow = view.GetDataRow(e.RowHandle)
                    row("Recargo") = 0
                    row("Total") = 0
                    row("Recargo %") = e.Value
                    row("Recargo") = (e.Value * row("Valor cliente")) / 100
                    'row("Recargo") += row("Recargo")
                    row("Total") = Format(row("Valor cliente") - row("Descuento") + row("Recargo"), "n2")
                    ' row("Total") += row("Total")
                Case "colRecargo"
                    Dim row As DataRow = view.GetDataRow(e.RowHandle)
                    row("Total") = 0
                    row("Recargo %") = (e.Value * 100) / row("Valor cliente")
                    row("Recargo") = (row("Recargo %") * row("Valor cliente")) / 100
                    'row("Recargo") += row("Recargo")
                    row("Recargo %") = row("Recargo %")
                    row("Total") = Format(row("Valor cliente") - row("Descuento") + row("Recargo"), "n2")
                    ' row("Total") += row("Total")
                Case "colValorcliente"
                    Dim row As DataRow = view.GetDataRow(e.RowHandle)
                    row("Valor cliente") = e.Value
                    row("Descuento") = (row("Descuento %") * row("Valor cliente")) / 100
                    row("Recargo") = (row("Recargo %") * row("Valor cliente")) / 100
                    row("Total") = Format(row("Valor cliente") - row("Descuento") + row("Recargo"), "n2")
                    row("objeto").nuevovalor = e.Value
            End Select
        End If
    End Sub


    Private Sub btn_liquidar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_liquidar.Click
        btn_Guardar_Click(Nothing, Nothing)
        For Each rowCliente As DataRow In dtt_cliente_.Rows
            Dim documentoVenta As New cls_documento_
            documentoVenta.fecha = Now
            documentoVenta.tipo = cls_documento_.enu_tipo.A
            documentoVenta.tipodocumento = cls_documento_.enu_tipodocumento.PedidoCliente
            documentoVenta.idtercero = CType(rowCliente("Objeto"), cls_cliente_).idtercero
            documentoVenta.idcondicioniva = CType(rowCliente("Objeto"), cls_cliente_).tercero.idcondicioniva
            documentoVenta.idmoneda = 1
            documentoVenta.documentodetalle_ = New cls_documentodetalle_
            documentoVenta.documentodetalle_.Items = New Collections.Generic.List(Of cls_documentodetalle_)
            Dim total As Decimal = 0
            For Each rowDetalle As DataRow In rowCliente.GetChildRows("Detalle")
                Dim documentoDetalle As New cls_documentodetalle_
                documentoDetalle.cantidad = 1
                documentoDetalle.idarticulo = CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).clientearticulo_.idarticulo
                documentoDetalle.nombre = CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).clientearticulo_.articulo.nombre
                documentoDetalle.idmoneda = 1
                documentoDetalle.valor = IIf(CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).nuevovalor = 0, CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).ultimovalor, CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).nuevovalor)
                documentoDetalle.descuento = CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).descuentoV
                documentoDetalle.recargo = CType(rowDetalle("Objeto"), cls_liquidaciondetalle_).recargoV
                documentoDetalle.valorfinal = documentoDetalle.valor - documentoDetalle.descuento + documentoDetalle.recargo
                documentoVenta.documentodetalle_.Items.Add(documentoDetalle)
                total += documentoDetalle.valorfinal
            Next
            documentoVenta.asiento = New cls_asiento_
            documentoVenta.asiento.importe = total
            documentoVenta.asiento.fecha = Now
            documentoVenta.asiento.tipoimporte = cls_asiento_.enu_tipoimporte.Salida
            documentoVenta.Nuevo()
        Next
    End Sub

    Private Sub btn_verCtaCte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_verCtaCte.Click
        If ComprobarPermiso("004005003") Then
            Try
                Dim cliente As Object = New cls_cliente_
                If gdv_general.SelectedRowsCount > 0 Then
                    If cliente.Buscar(gdv_general.GetDataRow(gdv_general.GetSelectedRows(0))("idcliente")) Then
                        Application.DoEvents()
                        Dim ABM As New xtf_ABMasiento_()  'New xtf_ABMbarrio
                        ABM.Modificar(cliente.tercero, New xtf_LISTADOasiento_(xtf_LISTADOasiento_.xtf_tipo.cliente), Nothing)
                        ABM.ControlarModificaciones(ABM.lac_general.Items)
                    End If
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If

        
    End Sub

    Private Sub btn_verCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_verCliente.Click
        If ComprobarPermiso("004001003") Then
            Try
                Dim barrio As New cls_cliente_
                If gdv_general.SelectedRowsCount > 0 Then
                    If barrio.Buscar(gdv_general.GetDataRow(gdv_general.GetSelectedRows(0))("idcliente")) Then
                        Application.DoEvents()
                        Dim ABM As New xtf_ABMcliente
                        ABM.Modificar(barrio, New xtf_LISTADOcliente_, Nothing)
                        ABM.ControlarModificaciones(ABM.lac_general.Items)
                    End If
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub
End Class